A queue is a basic element in many logic designs. Queues are frequently implemented to have FIFO (first in first out) functionality, but queues can also have more complex input/output algorithms. In a conventional FIFO queue, the FIFO has a memory array of N×M bits, where N is the FIFO depth, and M is the FIFO width. The conventional FIFO queue also has read and write pointers.
New data is written to the FIFO entry identified by the write pointer, and data is read from the FIFO entry identified by the read pointer. With each write to the FIFO, the write pointer is incremented. With each read from the FIFO, the read pointer is incremented.